package core

import (
	"fmt"
	"net/rpc"
	"reflect"
)

func RegisterServices(services []interface{}) error {
	// 创建一个RPC服务器
	server := rpc.NewServer()

	// 遍历服务列表，注册每个服务
	for _, service := range services {
		// 获取服务的类型
		serviceType := reflect.TypeOf(service).Elem()

		// 检查服务是否有Do方法，这是gRPC服务的要求
		if serviceType.NumMethod() == 0 || serviceType.Method(0).Name != "Do" {
			return fmt.Errorf("service %s does not implement the required Do method", serviceType)
		}

		// 注册服务
		if err := server.RegisterName(serviceType.Name(), service); err != nil {
			return err
		}
	}
	return nil
}
